package com.satan.juc.demo16;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @Author: Demon
 * @Date: 2024/3/29 18:27
 * @Description: CopyOnWriteArrayList 是一个线程安全的 ArrayList 实现，适用于读多写少的并发场景
 **/
public class CopyOnWriteArrayListDemo {
    public static void main(String[] args) {
        //1.构造函数 - 创建 CopyOnWriteArrayList 实例
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
        //2.add(E e) - 添加元素到列表
        list.add("Element");
        //3.add(int index, E element) - 在指定位置添加元素
        list.add(0, "First Element");
        //4.addAll(Collection<? extends E> c) - 添加集合中的所有元素
        List<String> anotherList = Arrays.asList("Second Element", "Third Element");
        list.addAll(anotherList);
        //5.get(int index) - 获取指定位置的元素
        String element = list.get(1);
        //6.remove(Object o) - 移除指定元素
        list.remove("Element");
        //7.remove(int index) - 移除指定位置的元素
        list.remove(0);
        //8.set(int index, E element) - 替换指定位置的元素
        list.set(0, "New Element");
        //9.size() - 获取列表的大小
        int size = list.size();
        //10.isEmpty() - 检查列表是否为空
        boolean isEmpty = list.isEmpty();
        //11.contains(Object o) - 检查列表是否包含指定元素
        boolean contains = list.contains("Element");
        //12.clear() - 清空列表
        list.clear();
        //13.iterator() - 获取迭代器进行遍历
        Iterator<String> iterator = list.iterator();
        //14.forEach(Consumer<? super E> action) - 对每个元素执行操作
        list.forEach(item -> System.out.println(item));




    }
}
